/****************************************************************************
**
** Trolltech hereby grants a license to use the Qt/Eclipse Integration
** plug-in (the software contained herein), in binary form, solely for the
** purpose of creating code to be used with Trolltech's Qt software.
**
** Qt Designer is licensed under the terms of the GNU General Public
** License versions 2.0 and 3.0 ("GPL License"). Trolltech offers users the
** right to use certain no GPL licensed software under the terms of its GPL
** Exception version 1.2 (http://trolltech.com/products/qt/gplexception).
**
** THIS SOFTWARE IS PROVIDED BY TROLLTECH AND ITS CONTRIBUTORS (IF ANY) "AS
** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
** TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
** PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
** OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** Since we now have the GPL exception I think that the "special exception
** is no longer needed. The license text proposed above (other than the
** special exception portion of it) is the BSD license and we have added
** the BSD license as a permissible license under the exception.
**
****************************************************************************/

#ifndef QTMARQUEELISTWIDGET_H_
#define QTMARQUEELISTWIDGET_H_


#include <QListWidget>
#include <QListWidgetItem>
#include <QTimer>
#include <QPainter>
#include <QBrush>
#include <QModelIndex>
#include <QPaintEvent>

//derive the Marquee List Widget from QListWidget
class QTMarqueeListWidget : public QListWidget
{
	Q_OBJECT

	public: //Member Functions
		enum Direction{LeftToRight,RightToLeft};
		QTMarqueeListWidget(QWidget *parent = 0);
		~QTMarqueeListWidget();	
		void show();
		void setAlignment(Qt::Alignment);
		int getSpeed();
		bool isDisplayable(QRect item_rect);
		
	public slots: //Public Member Slots
		void currentRowChangedSlot(int row);
		void setDirection(int d);
		
		
	protected: //Member Functions
		void paintEvent(QPaintEvent *evt);
		void resizeEvent(QResizeEvent *evt);

	private: //Data Members
		int px;
		int py;
		QTimer timer;
		Qt::Alignment m_align;
		int speed;
		int direction;
		int fontPointSize;
		int textLength;
		int delta;
		bool timer_started;
		QRect viewport_rect;
		int view_width;

	private slots: //Private Member Slots
		void refreshList();
};

#endif /* QTMARQUEELISTWIDGET_H_ */
